package com.amt.olcacon;

import java.text.DecimalFormat;
import java.text.NumberFormat;

public class DataFormatter {
    
    /**
     * 格式化科学计数法数值
     */
    public static String formatScientific(Double value) {
        if (value == null) return "N/A";
        
        if (Math.abs(value) < 0.001 && Math.abs(value) > 1e-10) {
            // 使用科学计数法
            DecimalFormat sciFormat = new DecimalFormat("0.###E0");
            return sciFormat.format(value);
        } else if (Math.abs(value) < 1e-10) {
            // 非常接近0的值
            return "0";
        } else {
            // 常规小数格式
            DecimalFormat decimalFormat = new DecimalFormat("0.######");
            return decimalFormat.format(value);
        }
    }
    
    /**
     * 格式化百分比
     */
    public static String formatPercentage(Double value) {
        if (value == null) return "N/A";
        
        NumberFormat percentFormat = NumberFormat.getPercentInstance();
        percentFormat.setMinimumFractionDigits(2);
        percentFormat.setMaximumFractionDigits(2);
        return percentFormat.format(value);
    }
    
    /**
     * 获取数值的显示宽度建议
     */
    public static int getDisplayWidth(Double value) {
        if (value == null) return 8;
        
        String formatted = formatScientific(value);
        return Math.max(8, formatted.length() + 2);
    }
}